Skip to content

磁盘基本操作

本文记录了关于磁盘操作的一些基本概念以及它们的逻辑关系,基本使用,更详细的内容见鸟哥的Linux私房菜 7.3

查看分区相关的信息

parted磁盘的分区表类型查看

shell
[root@localhost ~]# parted /dev/sda print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sda: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  标志
 1      1049kB  1075MB  1074MB  primary  xfs          启动
 2      1075MB  34.4GB  33.3GB  primary               lvm

[root@localhost ~]# parted /dev/sdb print
错误: /dev/sdb: unrecognised disk label
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

lsblk 查看系统上所有的磁盘,包括挂载和未挂载的

shell
[root@localhost ~]# lsblk -fp
NAME                        FSTYPE      LABEL           UUID                                   MOUNTPOINT
/dev/sda
├─/dev/sda1                 xfs                         05acea84-6335-414f-adff-166c8639ea79   /boot
└─/dev/sda2                 LVM2_member                 vFliKb-RdOe-uUnZ-3Cx1-O8lV-tbpc-yCOXPj
  ├─/dev/mapper/centos-root xfs                         0cfd0e8c-2967-4cc3-abef-c1025336945b   /
  └─/dev/mapper/centos-swap swap                        55a1c2c9-79f2-4b92-a039-702d9c7f466f   [SWAP]
/dev/sdb
/dev/sr0                    iso9660     CentOS 7 x86_64 2020-11-04-11-36-43-00                 /run/media/zhangxinming/CentOS 7 x86_64

# -f选项可以看到文件系统和UUID,-p选项可以看到完整的分区名,而不是不是最后的名称. 另外,lsblk后边也可以加具体的磁盘设备,表示仅仅查看该磁盘设备的信息

[root@localhost ~]# lsblk -fp /dev/sda
NAME                        FSTYPE      LABEL UUID                                   MOUNTPOINT
/dev/sda
├─/dev/sda1                 xfs               05acea84-6335-414f-adff-166c8639ea79   /boot
└─/dev/sda2                 LVM2_member       vFliKb-RdOe-uUnZ-3Cx1-O8lV-tbpc-yCOXPj
  ├─/dev/mapper/centos-root xfs               0cfd0e8c-2967-4cc3-abef-c1025336945b   /
  └─/dev/mapper/centos-swap swap              55a1c2c9-79f2-4b92-a039-702d9c7f466f   [SWAP]

查看分区的UUID的另一个命令blkid

上边已经说过 lsblk命令加上-f 选项,可以看到分区的UUID,blkid 命令可以直接查看分区的UUID

shell
[root@localhost ~]# blkid
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda1: UUID="05acea84-6335-414f-adff-166c8639ea79" TYPE="xfs"
/dev/sda2: UUID="vFliKb-RdOe-uUnZ-3Cx1-O8lV-tbpc-yCOXPj" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="0cfd0e8c-2967-4cc3-abef-c1025336945b" TYPE="xfs"
/dev/mapper/centos-swap: UUID="55a1c2c9-79f2-4b92-a039-702d9c7f466f" TYPE="swap"

分区操作

gdisk命令可以创建删除分区

bash
gdisk /dev/sda

查看内核中激活的分区表

gdisk新建的分区可能没能及时在内核中加载,下面的命令查看内核中激活的分区表

shell
[root@localhost ~]# cat /proc/partitions
major minor  #blocks  name

  11        0    4601856 sr0
   8        0   33554432 sda
   8        1    1048576 sda1
   8        2   32504832 sda2
   8       16    2097152 sdb
   8       17      20480 sdb1
   8       18     102400 sdb2
 253        0   29143040 dm-0
 253        1    3354624 dm-1

热更新分区表命令:partprobe

shell
[root@study ~]# partprobe -s   # 不过还是建议加上 -s 比较清晰!
/dev/vda: gpt partitions 1 2 3 4 5 6

再次使用lsblk查看实际的分区表

shell
[root@study ~]# lsblk /dev/sda

[root@study ~]# cat /proc/partitions # 核心的分区纪录

格式化分区操作,建立文件系统

gdisk只是完成了分区,但是每个分区有不同的格式,还需要进一步执行格式化操作才能正常使用这个分区

shell
[root@study ~]# mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] \ [-r parms] 装置名称

[root@study ~]# mkfs.xfs /dev/vda4

[root@study ~]# blkid /dev/vda4
/dev/vda4: UUID="39293f4f-627b-4dfd-a015-08340537709c" TYPE="xfs" # 确定建置好 xfs 文件系统了!

文件系统挂载与卸除

shell
[root@study ~]# mount -a
[root@study ~]# mount [-l]
[root@study ~]# mount [-t 文件系统] LABEL='' 挂载点
[root@study ~]# mount [-t 文件系统] UUID='' 挂载点 # 鸟哥近期建议用这种方式喔! [root@study ~]# mount [-t 文件系统] 装置文件名 挂载点

挂载 xfs/ext4/vfat 等文件系统

shell
[root@study ~]# mount UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" /data/xfs

挂载 CD 或 DVD 光盘

shell
[root@study ~]# mount /dev/sr0 /data/cdrom
mount: /dev/sr0 is write-protected, mounting read-only

挂载 vfat 中文随身碟 (USB 磁盘)

shell
范例:找出你的随身碟装置的 UUID,并挂载到 /data/usb 目录中
[root@study ~]# blkid
/dev/sda1: UUID="35BC-6D6B" TYPE="vfat"

[root@study ~]# mkdir /data/usb
[root@study ~]# mount -o codepage=950,iocharset=utf8 UUID="35BC-6D6B" /data/usb [root@study ~]# # mount -o codepage=950,iocharset=big5 UUID="35BC-6D6B" /data/usb [root@study ~]# df /data/usb
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 2092344 4 2092340 1% /data/usb

LVM总览

逻辑滚动条管理员 (Logical Volume Manager),更详细的内容见鸟哥的Linux私房菜 14.3

LVM 各组件的实现流程图示image-20210403152946616

PV操作

pvcrete 创建一个PV分区

bash
pvcreate /dev/sdb1 /dev/sdb2

pvdisplay或pvs 查看PV

shell
root@simon-Precision-Tower-7810:/home/simon# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda3  system lvm2 a--  464.56g <316.94g
  /dev/sdb1  data   lvm2 a--   <1.82t       0

root@simon-Precision-Tower-7810:/home/simon# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               data
  PV Size               <1.82 TiB / not usable <3.09 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              476931
  Free PE               0
  Allocated PE          476931
  PV UUID               iIHs4m-9R3d-Kt70-Q57E-Tz0Q-oamc-9tm3eF

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               system
  PV Size               <464.57 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              118928
  Free PE               81136
  Allocated PE          37792
  PV UUID               0Y7rMD-Pap7-O1ui-XCrl-1RnD-QD9V-2Rokup

VG操作

查看Volume Group

每个vg下面包含多个分区,形成了一个更大的分区

shell
root@simon-Precision-Tower-7810:/home/simon# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  data     1   1   0 wz--n-  <1.82t       0
  system   1   3   0 wz--n- 464.56g <316.94g

# 这里每个vg仅包含一个分区()
root@simon-Precision-Tower-7810:/home/simon# vgdisplay
  --- Volume group ---
  VG Name               data
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <1.82 TiB
  PE Size               4.00 MiB
  Total PE              476931
  Alloc PE / Size       476931 / <1.82 TiB
  Free  PE / Size       0 / 0
  VG UUID               E5FMKm-xreF-sTk9-23nD-lk1a-JIXJ-4sciEv

  --- Volume group ---
  VG Name               system
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  12
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               464.56 GiB
  PE Size               4.00 MiB
  Total PE              118928
  Alloc PE / Size       37792 / 147.62 GiB
  Free  PE / Size       81136 / <316.94 GiB
  VG UUID               q6xYvw-jHAz-UAuJ-Mwfe-9e0U-hVgv-q1V50h

创建一个VG

bash
vgcreate [卷组名] [物理卷名]

# vgcreate vg01 /dev/sdb /dev/sdc /dev/sdd
Volume group "vg01" successfully created

LV操作

4个lvcreate命令例子

  1. 在名为vg_newlvm的卷组中创建15G大小的逻辑卷:
bash
lvcreate -L 15G vg_newlvm
  1. 在名为vgnewlvm的卷组中创建大小为2500MB的逻辑卷,并命名为centos7newvol,这样就创建了块设备/dev/vgnewlvm/centos7newvol:
bash
lvcreate -L 2500 -n centos7_newvol vg_newlvm
  1. 可以使用lvcreate命令的参数-l来指定逻辑卷扩展的大小。也可以使用这个参数以卷组的大小百分比来扩展逻辑卷。这下列的命令创建了centos7newvol卷组的50%大小的逻辑卷vgnewlvm:
bash
lvcreate -l 50%VG -n centos7_newvol vg_newlvm

4.使用卷组剩下的所有空间创建逻辑卷

bash
lvcreate --name centos7newvol -l 100%FREE vgnewlvm